###EXERCICIO AULA 7B Bebes###

bebes <- read.table("babies.csv",header=TRUE, as.is=TRUE, sep="\t")
str(bebes)
summary(bebes)
##Modelo
#Varivel preditora = Tempo de gestao (dias) - gestation
#Variavel resposta = Peso do beb (kg)- bwt

#Modelo 1
bebes.mod1 <- lm(bwt~gestation, data=bebes)
plot(bwt~gestation, data=bebes)
abline(bebes.mod1, col="green", lwd=1)
summary(bebes$gestation)

#Criando a sequencia
seqx <- seq(from=147, to=532, length=100)
seqx
mean.g = mean(bebes$gestation)
mean.g
diff <- (seqx - mean.g)^2 
diff
ss.x <- sum((bebes$gestation - mean)^2)
ss.x
n <- length(bebes$gestation)
n2 <- n -2
n2

#estimando a variancia
var <- var(bebes$bwt)*(1/n + diff /ss.x)
var
## estimando o erro padro
mod.prev = sqrt(var)
mod.prev

#Estimando o coeficiente do modelo 1
#Aqui vamos lembrar da equao da reta y= a + b*x
a = coef (bebes.mod1)[1]
a
b = coef(bebes.mod1)[2]
b
y.previsto <- a + b*seqx
y.previsto

#Fazendo o teste t
t.test <- qt(0.95, n2)

##Intervalos de confiana
inter.1 <- y.previsto + t.test
inter.2 <- y.previsto - t.test

#Fazendo o grfico
plot(bwt~gestation, data=bebes)
abline(bebes.mod1, col="purple", lwd=1)
lines (x=seqx, y=inter.1, col="orange", lty=1)
lines (x=seqx, y=inter.2, col="orange", lty=1)



###EXERCICIO 7B.2 - GALILEU ESTAVA CERTO?###
init.h <- c(600, 700, 800, 950, 1100, 1300, 1500)
init.h
h.d <- c(253, 337, 395, 451, 495, 534, 573)
h.d

#Fazendo o grfico de disperso dos dados
plot(h.d~init.h)

##Vamos ajustar o modelo 
mod.01 <- lm(h.d~init.h)
mod.01

#agora vamos ajustar corretamente a equao da parabola
#usando a funo I() de insulate
mod.02 <- update(mod.01,.~.+I(init.h^2))
mod.02

##Agora vamos comparar os dois modelos criados.
anova(mod.01,mod.02)

#R: o segundo modelo  mais completo que o primeiro

#Agora vamos acrescentar as linhas previstas 
#para cada modelo no grfico
abline(mod.01)
cf.m2 <- coef(mod.02)
curve(cf.m2[1]+cf.m2[2]*x + cf.m2[3]*x^2, add=T, lty=2)

#Acabamos de plotar a curva tracejada no grfico
#seguindo a equao da parabola y=a+bx+cx^2

#Agora vamos verificar o resumo do modelo
summary(mod.02)

#Agora vamos avaliar se o polinomio de 3o grau
# o melhor modelo para descrever os dados do
#Galileu, seguindo a equao
# y = a+b*x+c*x^2+d*x^3

mod.01 <- lm(h.d~init.h)
mod.01
mod.02 <- update(mod.01,.~.+I(init.h^2))
mod.03 <- update(mod.02,.~.+I(init.h^3))
mod.03
##Agora vamos comparar o modelo 02 com o 03
anova(mod.02,mod.03)

##R: Sim, de acordo com a anova, o modelo 03 explica
#melhor os dados em relao ao modelo 02, ou seja, um
#polinmio de 3o grau explica melhor os dados do que um
#polinomio de 2o grau.


####EXERCICIO 7B 3 - MASSA DE RECEM-NASCIDOS####
bebes <- read.table("babies_new.txt", header=TRUE, sep=" ",as.is=TRUE)
bebes
is.na(bebes)
###vamos criar agora o modelo-cheio
modelo.cheio <- lm(bwt~gestation+parity+age+height+weight+smoke+gestation:parity+gestation:age+gestation:smoke+gestation:weight+age:weight+age:smoke+weight:smoke+gestation:age:weight:smoke, data=bebes)
modelo.cheio
summary(modelo.cheio)

##INTERPRETANDO O MODELO-CHEIO
#A partir do summary do modelo cheio, podemos verificar que a interao
#quadrupla no  relevante, ento podemos remov-la e ficar com
# o modelo mais simples.
#Quando comparamos os modelos com interaes duplas, podemos
#notar que a interao entre age:smoke e weight:smoke no foi
#relevante para o modelo, sendo assim, retiramos e continuamos a ficar com o modelo
#mais simples

modelo.01 <- lm(bwt~gestation+parity+age+height+weight+smoke+gestation:parity+gestation:age+gestation:smoke+gestation:weight, data=bebes)
summary(modelo.01)

#comparando com o segundo modelo, o summary nos informou que ainda temos que retirar mais uma interao = gestatio:weight

modelo.02 <- lm(bwt~gestation+parity+age+height+weight+smoke+gestation:parity+gestation:age+gestation:smoke, data=bebes)
summary(modelo.02)
anova(modelo.01,modelo.02)
modelo.nulo <- lm(bwt~1, data=bebes)
summary(modelo.nulo)
anova(modelo.cheio,modelo.nulo)
anova(modelo.02,modelo.nulo)

